This
document describes the Silverlight 2 features supported on Silverlight for Symbian, platform limitations, and behavior differences.
The Silverlight goal is to be fully compatible across all supported desktop
browsers and devices. However, there are a number of differences because of hardware limitations, browser differences, and
device-specific needs. The following sections introduce these device concepts.
Microsoft Silverlight for Symbian
– Beta supports a subset of Silverlight 2 features. Beginners should be
familiar with Silverlight 2.
The following Silverlight 2 features and technologies
are not supported in this release:
· Cryptography
· Deep Zoom
· DLR
· Digital Rights Management (DRM)
· Expression trees
· HTML DOM bridge
· JavaScript programmability
· LINQ to SQL
· Localization of Silverlight resources
· Reflection
· Sockets
· Visual Basic
· Windows Communication Foundation (WCF)
The following Silverlight 2 technologies are supported.
However, some features may not be supported, or behavior may be different because
of platform differences.
·
Silverlight 2 class library. For more information, see the Class Library Support section of this document.
·
Media. For more information, see the Media section of this document.
·
Controls. For more information, see the Controls section of this document.
·
Input. For more information, see the Input section of this document.
· Isolated storage. For more information, see the Isolated Storage section of this document.
·
Fonts. For more information, see the Font Support section of this document.
·
Graphics. All features are supported except for VideoBrush.
·
Networking. For more information, see the Networking section of this document.
This section includes information about browser limitations on the Nokia S60 browser.
No Support for Multiple Plug-ins
Multiple
plug-ins on the same page are not supported. It
is possible that the current browser page contains a plug-in, and a new browser
page is launched which may contain a plug-in. This scenario is not supported
and can lead to undefined behavior.
Dynamically Changing Browser Plug-in Source
If
you change the plug-in source to a different XAP file after the plug-in has
completed loading a Silverlight application, the result is undefined behavior and
may cause the browser to crash.
Silverlight Plug-in Object Reference
The
Silverlight Plug-in Object reference is not supported in the beta release.
However, access to the plug-in using JavaScript is not prohibited.
Custom & Response Headers
Custom
headers are not supported by the Nokia S60 browser. Any custom header sent by
the application in the HTTP POST request never reaches the server.
The
Nokia S60 browser does not support response headers. The code below prints content
type as “text/html” instead of “text/html; charset=utf-8”.
HttpWebResponse response = state as HttpWebResponse;
string contentType = response.ContentType;
System.Console.WriteLine(contentType);
Silverlight plug-in not immediately accessible from JavaScript
The
Silverlight plug-in is not immediately accessible from JavaScript in the onLoad()
event. To work around this issue, you can add a time delay before you access
the plug-in.
In
the following XAML code, it is assumed that the RunFunc method handles the Loaded
event.
<Grid x:Name="LayoutRoot"
Background="White" Loaded="RunFunc"></Grid>
Change
RunFunc
to a time out function such as the following:
<Grid x:Name="LayoutRoot"
Background="White" Loaded="TimeoutFunc"></Grid>
TimeoutFunc sets a delay of 200ms before access to the plug-in can
occur.
function TimeoutFunc(sender, eventArgs)
{
setTimeout(function()
{ RunFunc(sender, eventArgs); }, 200);
}
Updating HTML DOM values thru Managed Code
If you
update HTML DOM element values and attributes from managed code, the new values
do not take effect on the web page. For example, if the innerHTML attribute is set, the new does not show up
on the browser screen. The failure is not evident in managed code.
The
following code snippet sets a value that is not displayed on the browser:
HtmlElement _label =
HtmlPage.Document.GetElementById("txtLabel");
_label.SetAttribute("innerHTML", "Hello
World");
The
following code snippet correctly reads the value previously set using managed
code. However, it still fails to read the content preset in the HTML tag.
HtmlElement _label =
HtmlPage.Document.GetElementById("txtLabel");
string innerText =
_label.GetAttribute("innerHTML");
No Timeout Error if Network Goes Down
A timeout
error is not generated if there is a network error or the HTTP server goes
offline after the download has started. This occurs because the browser does
not invoke the NPP_URLNotify() API as expected.
For information on media support on Nokia S60, see the Media on Nokia S60 documentation.
All
controls are supported in this release except for those that are shipped in the
Silverlight SDK assemblies. For a list of controls that
are not supported, see Class Library Support.
The
following controls in Silverlight 2 are supported in this release, although the
user may experience usability issues in some cases because of the small screen
size.
· Border
· Button
· ContentPresenter
· Grid
· Image
· Clip
· RenderTransform
· Slider
· ValueChanged
· Stack Panel
· Thumb
For
the TextBox
control, the onscreen keyboard appears when the user clicks on the control. The
onscreen keyboard supports mini QWERTY and full QWERTY. The T9 keyboard is not
supported. The InkPresenter
control supports handwriting.
The Isolated Storage maximum quota per application is 1 Mb (1048576 bytes). This value is fixed and an application cannot request additional storage space. As a result, the IncreaseQuotaTo API is not supported.
When cleanup is required, Isolated Storage
files need to be manually deleted by the user. The device does not provide a UI
associated with cleanup. Isolated Storage files are stored in <drive>:\data\Application
Data\Microsoft\Silverlight\IS, where <drive> is either E: or C:.
The
FileShare.Read
enumeration value is not supported. Use of this enumeration value will result
in an error. Use the FileShare.Write
enumeration value instead. For example, in the following
code, the first example fails but the second example succeeds.
IsolatedStorageFile store =
IsolatedStorageFile.GetUserStoreForApplication();
String s_strTFName = "Co5726ctor_fm_fa_fs_i.cs";
String s_strTFAbbrev = s_strTFName.Substring(0, 6);
String fileName = s_strTFAbbrev + "TestFile.txt";
Stream fs2, fs3;
// Example 1 – This code fails.
// Open a stream in FileShare.Read mode; you
// need READ Lock for this
fs2 = new IsolatedStorageFileStream(fileName,
FileMode.Create,
FileAccess.ReadWrite,
FileShare.Read, store);
// Example 2 – This code succeeds.
// Open a stream in FileShare.ReadWrite mode; you
// need WRITE lock for this.
fs3 = new IsolatedStorageFileStream(fileName, FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite, store);
Font support is controlled by the fonts that are already present on the device, and this support is limited to TrueType fonts. No fonts are installed with Silverlight.
If
the font that you want is not present on the target platform, we recommend that
you deploy it with the application. We recommend that you use the TTF format
for the application font.
An
embedded font must be added to the DLL or XAP as an embedded resource for the
font to be supported by the runtime in managed code scenarios.
Support for networking features includes the HttpWebRequest and WebClient classes.
For information about features that are not supported, see the Class
Library Support
section of this document.
Note If you use the HttpWebRequest or WebClient class to download
a large amount of content, a failure may occur because of resource exhaustion.
To avoid this, we recommend that you use the Dispose
method on the download Result object
immediately after the download completes.
ThreadPool is not supported.
Use the Silverlight.chm Help file in the Silverlight 2 Software Development Kit (SDK) Documentation
to find information about classes,
methods, and properties that you can use for Silverlight application
development.
If you use an unsupported type or member in
your Silverlight application, you will get either a MissingMemberException or a TypeLoadException when you run the
application.
The following Silverlight 2 assemblies are not supported in this release:
· Microsoft.VisualBasic.dll
· System.ServiceModel.dll
· The following SDK assemblies are not supported:
· System.Data.Services.Client.dll
· System.Windows.Controls.dll
· System.Windows.Controls.Data.dll
· System.Windows.Controls.Input.dll
The following namespaces are not supported in this release:
· All namespaces associated with the unsupported assemblies. (See above.)
· System.Linq.Expressions
· System.Net.Sockets
· System.Reflection
· System.Reflection.Emit
· System.Security
· System.Security.Cryptography
· System.Security.Cryptography.X509Certificates
· System.Web.UI.Design.SilverlightControls
· System.Web.UI.SilverlightControls
· System.Windows.Automation
· System.Windows.Automation.Peers
· System.Windows.Automation.Provider
· System.Windows.Browser
The following types are not supported in this release:
· All types in unsupported namespaces. (See above.)
· SDK Controls
· AutoCompleteBox
· Calendar
· ComboBox
· DataGrid
· DataPager
· DatePicker
· GridSplitter
· Label
· TabControl
· TreeView
· DeepZoomImageTileSource
· LicenseAcquirer
· MultiScaleImage
· MultiScaleSubImage
· SocketAddress
· ThreadPool
· VideoBrush
The following table lists members in supported types that are either
unsupported or behave differently on Nokia S60 5th Edition because
of platform differences or differences between the Silverlight runtime for
Nokia and the Silverlight runtime for Windows.
Member |
Behavior on Nokia S60 5th
Edition |
System.Threading.WaitHandle.WaitAll() |
A
call to this method always throws a NotSupportedException. This
restriction applies to all overloaded versions of this method. |
System.Threading.WaitHandle.WaitAny() |
A
call to this method always throws a NotSupportedException. This
restriction applies to all overloaded versions of this method. |
System.Threading.Thread.Abort() |
The thread is not aborted after you call this
method. |
System.IO.FileShare.Read |
Use
of this enumeration value will result in an error. Use the FileShare.Write enumeration value instead. See the
section on Isolated
Storage for example code. |
System.IO.IsolatedStorage.IsolatedStorageFile |
Including
both single-character ("?") and multiple character ("*")
wildcards in the searchPattern
parameter is not supported. For
example, if you include directoryname*
at the end of the search pattern, the search pattern is treated as "*"
and the function returns all directory names under the provided isolated
storage path. If
you include "*.*" at the end of the search pattern, the search
pattern is treated as "*" and the function returns all directory
names under the provided isolated storage path. |
System.IO.IsolatedStorage |
Including
both single-character ("?") and multiple character ("*")
wildcards in the searchPattern
parameter is not supported. For
example, if you include "Project\*.txt" at the end of the search
pattern, the search pattern is treated as "Project\*", and the
function returns all file names under the Project directory of the isolated
storage scope. |
System.IO.IsolatedStorage |
FileShare.Read is treated as FileShareWrite. |
System.IO.IsolatedStorage |
A call to this method always throws a NotSupportedException. |
System.Text.RegularExpressions.Regex.CacheSize |
The
get property always returns 0. The
set property does not set the given value. CacheSize remains 0. |
System.TimeZoneInfo.Local.StandardName System.TimeZoneInfo.Local.DaylightName System.TimeZoneInfo.Local.DisplayName |
Time
zone information is not available for these members. The output string is
always blank. |
Members of System.Windows.Controls.MediaElement |
The
Play, Stop,
and Pause methods are supported. Other
methods of MediaElement
are not supported in this beta release. |
The
following symptoms may be related to known issues in the Silverlight for Symbian.
· Browser crashes intermittently
See the Getting Started document for information on setting the object tag in the application.
· Silverlight for Symbian cannot load large files
Files larger than 1 MB will not load. The Symbian operating system does not allow memory mapping of large files. This typically can impact fonts, JPG files, and XAP files.
· Unexpected behavior in HTML OnLoad event
See the section, Silverlight plug-in not immediately accessible from JavaScript, in this document.
· Unexpected behavior when managing focus for the plug-in
Focus- and activity-based events do not occur when expected. Some input and focus events do not occur in a predictable order.
· Files uploaded using WebClient are corrupted
This is a known issue with some Nokia device and firmware combinations. The bug has been fixed in new firmware that is not yet publicly available.
· Screen repaint is incomplete after using OpenFileDialog
When OpenFileDialog is dismissed, the following repaint issues can occur:
· A part of the navigation bar is rendered incompletely on closing the dialog box.
· If the browser is in full screen mode, and OpenFileDialog is launched and dismissed, then the browser window full screen watermark and the browser navigation bar display simultaneously. The browser assumes that it is still in full screen mode and the user must click the icon to toggle out of this mode.
· When the repaint issue described previously occurs, the navigation bar belonging to the application that was previously occupying the screen appears. For example, the Contacts button may display.